
CCPoint ccpNeg(CCPoint v);
CCPoint ccpAdd(CCPoint v1, CCPoint v2);
CCPoint ccpSub(CCPoint v1, CCPoint v2);
CCPoint ccpMult(CCPoint v, CGFloat s);
CCPoint ccpMidpoint(CCPoint v1, CCPoint v2);
CGFloat ccpDot(CCPoint v1, CCPoint v2);
CGFloat ccpCross(CCPoint v1, CCPoint v2);
CCPoint ccpPerp(CCPoint v);
CCPoint ccpRPerp(CCPoint v);
CCPoint ccpProject(CCPoint v1, CCPoint v2);
CCPoint ccpRotate(CCPoint v1, CCPoint v2);
CCPoint ccpUnrotate(CCPoint v1, CCPoint v2);
CGFloat ccpLengthSQ(CCPoint v);
CGFloat ccpLength(CCPoint v);
CGFloat ccpDistance(CCPoint v1, CCPoint v2);
CCPoint ccpNormalize(CCPoint v);
CCPoint ccpForAngle(CGFloat a);
CGFloat ccpToAngle(CCPoint v);
float   clampf(float value, float min_inclusive, float max_inclusive);
CCPoint ccpClamp(CCPoint p, CCPoint from, CCPoint to);
CCPoint ccpFromSize(CCSize s);
CCPoint  ccpLerp(CCPoint a, CCPoint b, float alpha);
bool  ccpFuzzyEqual(CCPoint a, CCPoint b, float variance);
CCPoint  ccpCompMult(CCPoint a, CCPoint b);
float  ccpAngleSigned(CCPoint a, CCPoint b);
float  ccpAngle(CCPoint a, CCPoint b);
CCPoint  ccpRotateByAngle(CCPoint v, CCPoint pivot, float angle);
bool  ccpLineIntersect(CCPoint p1, CCPoint p2, CCPoint p3, CCPoint p4, float *s, float *t);
bool ccpSegmentIntersect(CCPoint A, CCPoint B, CCPoint C, CCPoint D);
CCPoint ccpIntersectPoint(CCPoint A, CCPoint B, CCPoint C, CCPoint D);
